Шаг 85 - Корректное указание состояния «приложение занято».

Приложения, производящие операции, выполнение которых продолжается, даже если компьютер не производит никаких видимых действий, должны использовать функцию API SetThreadExecutionState() для указания того, что компьютер занят. Когда компьютер занят, операционная система не будет отправлять запросы на переход в спящий режим. Например, Windows 2000 пометит поток как занятый, если он имеет открытый файл на сетевом диске, что предотвратит «засыпание» при открытых сетевых файлах, если только пользователь явно не запросит переход в спящий режим.

Приложение должно использовать флаг ES_CONTINUOUS при установке состояния потока, только если прерывание текущей операции может привести к потере данных. Примером такой операции является запрос на обновление базы данных. Во всех других случаях приложения должны использовать флаг ES_SYSTEM_REQUIRED. Дополнительную информацию можно найти в Microsoft Platform SDK.

Обратите внимание, что приложения, использующие функцию SetThreadExecutionState(), будут получать запросы о переходе в спящий режим, если пользователь явно запросит о таком переходе или закроет крышку портативного компьютера. Обработка этих запросов описана в остальных требованиях этой главы.

Примерами приложений, которым необходимо использовать эту функцию, являются программы воспроизведения видео или презентаций. Такие приложения должны использовать функцию API SetThreadExecutionState() с установленным флагом ES_DISPLAY_REQUIRED для предотвращения отключения монитора.

Hosted by uCoz